home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The X-Philes (2nd Revision)
/
The X-Philes Number 1 (1995).iso
/
xphiles
/
coding
/
dsp
/
aib2xmpl.exe
/
AIC_C.ASM
< prev
next >
Wrap
Assembly Source File
|
1991-08-02
|
10KB
|
166 lines
;**************************************************************
;
; aic_c.asm
;
; Jeffrey Schwartz
;
; 08-02-91
;
; (C) Texas Instruments Inc., 1992
;
; Refer to the file 'license.txt' included with this
; this package for usage and license information.
;
;**************************************************************
******************************************************************************
* *
* TMS320C25 AIC LOOPBACK TEST *
* *
* AUTHOR: Jeffrey Schwartz *
* DSP Applications *
* Texas Instruments *
* *
* THIS PROGRAM READS A VALUE FROM THE AIC AND WRITES IT BACK OUT TO THE AIC. *
* *
* SINCE THIS EXAMPLE INCLUDES ASSEMBLY AND C CODE, THE MAKEFILE MUST COMBINE *
* THE TWO, AS IS DONE IN LOOPBACK.MAK . THE .CMD FILE MUST BE USED TO *
* ALLOCATE THE "ORG" SECTION. ORG, IN THIS CASE, IS A SIMPLIFIED INTERRUPT *
* VECTOR TABLE. *
* *
* THE ASSEMBLY CODE CONTAINS TWO FUNCTIONS FOR TRANSCEIVING DATA, TCV_DAT, *
* AND TCV_DAT_CONF. TCV_DAT TRANSMITS THE DATA, SHIFTED TWO BITS TO THE *
* LEFT SO THAT THE SIGNAL IS UNDERSTOOD AS DATA. IF NOT, THE LOWER 2 LSBS *
* COULD BE CONFUSED AS AIC CONTROL BITS, CAUSING THE PROGRAM TO CRASH. *
* TCV_DAT_CONF ALLOWS FOR CONFIGURATION OF THE AIC, AS WELL AS TRANSCEIVING *
* OF DATA. CONFIGURATION INVOLVES SECONDARY COMMUNICATION, WHICH IS *
* SIGNALED BY A WORD WITH THE LAST 2 LSBS SET HIGH. THE CONFIGURATIONS *
* WHICH ARE PERFORMED IN AIC_CC.C ARE BYPASSING THE BANDPASS FILTER *
* (tcv_dat_conf(0,0xE3); AND SETTING THE VALUES OF TA, RA, TB, AND RB *
* (tcv_dat_conf(a, (tb<<9) + (ra<<2) + 0)). FOR MORE INFORMATION, SEE *
* LINEAR CIRCUITS VOLUME 2 DATA ACQUISITION AND CONVERSION, PP. 2-247 - *
* 2-276. *
* *
* VARIOUS SETTINGS OF JUMPERS E8 AND E9 CAN BE USED TO ALLOW THE INPUT AND *
* OUTPUT SIGNALS TO BE WRITTEN TO AND READ FROM DIFFERENT AUDIO CONNECTOR *
* JACKS. THE SETTINGS BELOW WORK WITH THE INPUT AT SIGNAL NODE CAIN (P3), *
* AND THE OUTPUT AT NODE COUT (P4). *
* *
* WITHOUT PROPER SETTING OF THE OTHER JUMPERS, THE AIB2 MAY NOT WORK WITH *
* THIS PROGRAM. THE PROPER SETTINGS ARE AS FOLLOWS: *
* *
* *
* AIB2 JUMPER SETTINGS *
* JUMPER SETTING JUMPER DESCRIPTION *
* E1 OFF ;MC/MP select A=MP(Vcc) B=MC(GND) >> WARNING! << *
* E2 A ;A:INT0, B:INT1, C:INT2 *
* E3 B-C ;A:BIOZ, B:INT , C:Use C17 and AIC together *
* E4 A ;A:End of conversion, B:Sample rate clock *
* E5 B ;A:Bypass S/H, B:Use sample and hold *
* E6 A ;A:20V range, B:10V range *
* E7 ON ;ON:Connects analog and digital ground *
* E8 A ;A:A/D for input, B:Codec/AIC for input *
* E9 OFF ;A:Input anti-alias filter, B:Bypass anti-alias *
* E10 OFF ;ON:Connect Vcc to C10/15 *
* E11 A ;EPROM type select (see AIB manual) *
* E12 A ;A:Start conv. on sample rate clk, B:start on A/D read*
* E13 A ;EPROM type select (see AIB manual) *
* E14 OFF ;If installed, supplies 8khz frame synch to CODEC *
* E15 A ;EPROM type select (see AIB manual) *
* E16 OFF ;If installed, supplies 2.048 Mhz clock to CODEC *
* E17 OFF ;ON: AIC in byte mode OFF:AIC in word mode *
* E18 OFF ;ON: ties FSR & FSX together for CODEC operation *
* E19 OFF ;ON: ties FSR & FSX to C17 FSR *
* E20 B ;A:select audio power amp B:bypass amplifier *
* E21 A or B ;A:bypass smoothing filter for P2 output B: add filter*
* E22 B ;A:16 bit DAC as P2 output B:CODEC/AIC as output *
* E23 OFF ;A:generate clock B:use emulator clock *
* E24 ON ;ON:1 I/O wait state OFF:No I/O wait state *
* E25 OFF ;ON:use program wait states OFF:No program wait states*
* E26 OFF ;ON:2 program wait states OFF:0 or 1 prog wait states *
* E27 OFF ;ON:2 I/O wait states OFF:1 or 2 I/O wait states *
* E28 ON ;ON:connects V+ to TB1 OFF:disconnects V+ *
* E29 ON ;ON:connects V- to TB1 OFF:disconnects V- *
* E30 B ;A:Use 2792 EPROM B:standard EPROM *
* E31 B ;A:Use 2792 EPROM B:standard EPROM *
* E32 B ;A:Use 2792 EPROM B:standard EPROM *
* E33 B ;A:Use 2792 EPROM B:standard EPROM *
* E34 OFF ;ON:connects DX0 and DX1 of C17 (second serial port) *
* E35 OFF ;ON:connects DR0 and DR1 of C17 (second serial port) *
* *
* NOTE THAT SOME OF THESE SETTINGS, SUCH AS THOSE FOR EPROM CONFIGURATION *
* ARE UNNECESSARY FOR THIS APPLICATION. *
******************************************************************************
IMR .set 04h ; INTERRUPT MASK REGISTER
DXR .set 01h ; DATA TRANSMIT REGISTER
DRR .set 0h ; DATA RECEIVE REGISTER
.global _tcv_dat
.global _tcv_dat_conf
.global _dint
.global _eint
.sect "ORG"
B 0200h ; RESET VECTOR
B 0 ; RESET VECTOR
B 0 ; RESET VECTOR
B 0 ; RESET VECTOR
.space 16*16
B 0 ; RESET VECTOR
NOP ; SIMPLIFIED RINT SERVICE ROUTINE
RET
NOP ; SIMPLIFIED XINT SERVICE ROUTINE
RET
B 0 ; RESET VECTOR
.text
* THE INITIAL UNDERSCORE ALLOWS C-CALLABILITY
_dint: DINT ; C-CALLABLE INTERRUPT DISABLER
RET
_eint: EINT ; C-CALLABLE INTERRUPT ENABLER
RET
_tcv_dat_conf
SFSM ; SET FRAME SYNC MODE (EXTERNAL FSR-)
RTXM ; RESET TRANSMIT MODE (FSX- INPUT)
FORT 0 ; SET 16-BIT WORDS
SSXM ; SET SIGN EXTENSION MODE
SST *- ; STORE ST0
LDPK 0 ; IMR IS ON DATA PAGE 0
LACK 020h ; 020h IS THE MASK THAT ALLOWS XINT
SACL IMR ; STORE THE MASK IN THE IMR
LAC *-, 2 ; SEND OUT DATA WITH AIC COMMAND
ORK 03h ; FOR SECONDARY COMMUNICATION
SACL DXR ; STORE IN THE DATA TRANSMIT REGISTER
IDLE ; WAIT FOR XINT AFTER COMPLETE TRANSMISSION
LAC *+ ; LOAD ACCUMULATOR WITH SECONDARY WORD
SACL DXR ; START SECONDARY TRANSMISSION
IDLE ; WAIT FOR XINT AFTER COMPLETE TRANSMISSION
ZAC ; ZERO THE ACCUMULATOR
SACL IMR ; CLEAR IMR
LAC DRR ; DATA FROM A/D IS IN UPPER 14 MSBS
SFR ; SHIFT RIGHT TWICE TO
SFR ; PUT DATA BACK INTO INTEGER FORM
MAR *+ ; POINT AR0 TO WHERE ST0 IS STORED
LST * ; RESTORE ST0
RET ; RETURN TO C
_tcv_dat SST *- ; STORE ST0
LDPK 0 ; IMR IS IN DATA PAGE 0
LACK 020h ; 020h IS THE MASK FOR XINT
SACL IMR ; MASK IMR FOR XINT
LAC *+, 2 ; SHIFT DATA LEFT BY 2 TO DENOTE DATA
SACL DXR ; TRANSMIT DATA
IDLE ; WAIT FOR XINT
ZAC ; ZERO THE ACCUMULATOR
SACL IMR ; CLEAR IMR
LAC DRR ; DATA FROM A/D IS IN UPPER 14 MSBS
SFR ; SHIFT RIGHT TWICE TO
SFR ; PUT DATA BACK INTO INTEGER FORM
LST * ; RESTORE ST0
RET ; RETURN TO C
.end